package com.deco.back.shiro;

import com.deco.back.dto.DecoUserPwdToken;
import com.deco.service.sys.CmsUserService;
import com.free.ext.shiro.filter.CaptchaFormAuthenticationFilter;
import com.free.ext.shiro.filter.CustomAuthenticationFilter;
import com.free.ext.shiro.token.CapatchaUserPwdToken;
import org.apache.shiro.authc.AuthenticationToken;
import org.apache.shiro.web.util.WebUtils;
import org.springframework.beans.factory.annotation.Autowired;

import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;

/**
 * <p>
 * 功能概述:
 * </p>
 * <p>
 * 功能详述:
 * </p>
 */
public class UserAuthenticationFilter extends CustomAuthenticationFilter {

    /*========================================================================*
     *                         Public Fields (公共属性)
     *========================================================================*/

    /*========================================================================*
     *                         Private Fields (私有属性)
     *========================================================================*/

    @Autowired
    private CmsUserService cmsUserService;

    /*========================================================================*
     *                         Construct Methods (构造方法)
     *========================================================================*/

    /*========================================================================*
     *                         Public Methods (公有方法)
     *========================================================================*/

    @Override
    public AuthenticationToken createToken(ServletRequest request, ServletResponse response){
        // 将画面上用户输入的认证信息做成 token（实际认证的检查在自定义的 realms 类里面完成）
        String username = getUsername(request);
        String password = getPassword(request);
        String captcha = getCaptcha(request);
        boolean rememberMe = isRememberMe(request);
        String host = getHost(request);
        String p5 = WebUtils.getCleanParam(request, "p5");
        return new DecoUserPwdToken(p5, captcha, username, password, host, rememberMe);
    }

    @Override
    public void loginSuccess(Object object) {

    }

    @Override
    public void loginFailure(String custName) {

    }

    /*========================================================================*
     *                         Private Methods (私有方法)
     *========================================================================*/
}
